package com.zhuhao.design_mode.behavioral_pattern.observer_pattern.java_listener;

import java.util.Vector;

/**
 * 事件源，相当于被观察者（观察者模式的变体，自己维护一个监听事件列表）
 *
 * @Author zhuhao
 * @Date 2022/5/29 21:50
 * @desc
 */
public class MyEventSource {
    /**
     * 自己维护一个监听事件列表
     * 监听器列表，监听器的注册则加入此列表
     */
    private Vector<MyEventListener> eventListenerList = new Vector<>();

    /**
     * 注册监听器
     *
     * @param eventListener
     */
    public void addListener(MyEventListener eventListener) {
        this.eventListenerList.add(eventListener);
    }

    /**
     * 撤销注册
     *
     * @param eventListener
     */
    public void removeListener(MyEventListener eventListener) {
        eventListenerList.remove(eventListener);
    }

    /**
     * 接受外部事件
     *
     * @param eventObject
     */
    public void notifyListenerEvents(MyEventObject eventObject) {
        for (MyEventListener eventListener : this.eventListenerList) {
            eventListener.handleEvent(eventObject);
        }

    }

}
